<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>随机数函数</title>
</head>
<body>
<h3> 内置对象-生成任意范围随机数</h3>
<p>
    Math.random() 随机数函数， 返回一个0 - 1之间，并且包括0不包括1的随机小数 [0, 1）
</p>
<pre style="font-size: 20px;">
<strong>如何生成0-10的随机数呢？</strong>
    Math.floor(Math.random() * (10 + 1))

<strong>如何生成5-10的随机数？</strong>
    Math.floor(Math.random() * (5 + 1)) + 5

<strong>如何生成N-M之间的随机数</strong>
    Math.floor(Math.random() * ((M - N) + 1)) + N
</pre>
<p>
    额外说明: 理解公式 <br>
    random生成的是 0.xxx 小数,要乘才有整数部分 <br>
    floor向下取整,可以取到0但是取不到最大数,所以要+1. 可以取到随机的最大数 <br> <br>

    范围随机数,最后+N 是因为公式生成的随机数是 (0 到 M减N) 的范围的, 加上N 相当于 随机数+N <br>
    这样最终的随机数,就是N到M范围的了
</p>
<a href="https://www.bilibili.com/video/BV1Y84y1L7Nn?p=72&vd_source=cb928a955f1123af004a2e3158113ea7">
    视频教程
</a>

<script>
    // 左闭右开 能取到 0 但是取不到 1 中间的一个随机小数
    console.log('---- 0-1 随机小数 -----')
    console.log(Math.random())

    // 生成0-10的随机数
    console.log('---- 0-10的随机数 -----')
    console.log(Math.floor(Math.random() * (10 + 1)))  // 乘以10，向下取整 取不到10，所以+1
    console.log(Math.ceil(Math.random() * 10))  // 乘以10，向上取整可以取到10， 不用在+1，但是不能取0了

    // 生成5-10的随机数
    console.log('---- 5-10的随机数 -----')
    console.log(Math.floor(Math.random() * (5 + 1)) + 5)

    // 随机取数组的 元素
    console.log('---- 随机取数组的 元素 -----')
    let 数组 = ['黑色', '红色', '黄色']
    let 数组_索引 = Math.floor(Math.random() * 数组.length) // 乘以数组的长度, 随机输出索引号
    console.log(数组[数组_索引])

    // 声明函数 自己制作一个输入范围,随机生成一个范围内的 整数
    function 随机生成一个范围里的整数(范围最小值, 范围最大值) {
        return Math.floor(Math.random() * ((范围最大值 - 范围最小值) + 1) + 范围最小值)
        //        向下取整   0-1的随机小数    乘以得到整数部分   +1可以取到随机最大值   +范围最小值,相当于 已经生成的随机数+范围最小值
    }

    // 调用函数
    let 随机整数 = 随机生成一个范围里的整数(5, 8)
    console.log(`随机生成5-8之间的整数:  ${随机整数}`)
</script>
</body>
</html>